package protobuf {
	import com.netease.protobuf.*;
	use namespace com.netease.protobuf.used_by_generated_code;
	import com.netease.protobuf.fieldDescriptors.*;
	import flash.utils.Endian;
	import flash.utils.IDataInput;
	import flash.utils.IDataOutput;
	import flash.utils.IExternalizable;
	import flash.errors.IOError;
	import protobuf.E_MATCH_STATE;
	import protobuf.MSPKG_BET_POOL_NTF;
	import protobuf.MSPKG_MATCH_ID_NTF;
	import protobuf.TABLE_PLAYER_INFO;
	// @@protoc_insertion_point(imports)

	// @@protoc_insertion_point(class_metadata)
	public dynamic final class TABLE_LIVE_INFO extends com.netease.protobuf.Message {
		/**
		 *  @private
		 */
		public static const PLAYERS_INFO:RepeatedFieldDescriptor$TYPE_MESSAGE = new RepeatedFieldDescriptor$TYPE_MESSAGE("protobuf.TABLE_LIVE_INFO.players_info", "playersInfo", (1 << 3) | com.netease.protobuf.WireType.LENGTH_DELIMITED, protobuf.TABLE_PLAYER_INFO);

		[ArrayElementType("protobuf.TABLE_PLAYER_INFO")]
		public var playersInfo:Array = [];

		/**
		 *  @private
		 */
		public static const TILES_ON_TABLE:RepeatedFieldDescriptor$TYPE_UINT32 = new RepeatedFieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.tiles_on_table", "tilesOnTable", (2 << 3) | com.netease.protobuf.WireType.VARINT);

		[ArrayElementType("uint")]
		public var tilesOnTable:Array = [];

		/**
		 *  @private
		 */
		public static const TILES_IN_HAND:RepeatedFieldDescriptor$TYPE_UINT32 = new RepeatedFieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.tiles_in_hand", "tilesInHand", (3 << 3) | com.netease.protobuf.WireType.VARINT);

		[ArrayElementType("uint")]
		public var tilesInHand:Array = [];

		/**
		 *  @private
		 */
		public static const MONEY:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.TABLE_LIVE_INFO.money", "money", (4 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var money$field:Number;

		private var hasField$0:uint = 0;

		public function clearMoney():void {
			hasField$0 &= 0xfffffffe;
			money$field = new Number();
		}

		public function get hasMoney():Boolean {
			return (hasField$0 & 0x1) != 0;
		}

		public function set money(value:Number):void {
			hasField$0 |= 0x1;
			money$field = value;
		}

		public function get money():Number {
			return money$field;
		}

		/**
		 *  @private
		 */
		public static const TABLE_ID:FieldDescriptor$TYPE_UINT64 = new FieldDescriptor$TYPE_UINT64("protobuf.TABLE_LIVE_INFO.table_id", "tableId", (5 << 3) | com.netease.protobuf.WireType.VARINT);

		public var tableId:UInt64;

		/**
		 *  @private
		 */
		public static const BANKER_CHAIR_ID:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.banker_chair_id", "bankerChairId", (6 << 3) | com.netease.protobuf.WireType.VARINT);

		private var banker_chair_id$field:uint;

		public function clearBankerChairId():void {
			hasField$0 &= 0xfffffffd;
			banker_chair_id$field = new uint();
		}

		public function get hasBankerChairId():Boolean {
			return (hasField$0 & 0x2) != 0;
		}

		public function set bankerChairId(value:uint):void {
			hasField$0 |= 0x2;
			banker_chair_id$field = value;
		}

		public function get bankerChairId():uint {
			return banker_chair_id$field;
		}

		/**
		 *  @private
		 */
		public static const TILES_WALL_COUNT:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.tiles_wall_count", "tilesWallCount", (7 << 3) | com.netease.protobuf.WireType.VARINT);

		private var tiles_wall_count$field:uint;

		public function clearTilesWallCount():void {
			hasField$0 &= 0xfffffffb;
			tiles_wall_count$field = new uint();
		}

		public function get hasTilesWallCount():Boolean {
			return (hasField$0 & 0x4) != 0;
		}

		public function set tilesWallCount(value:uint):void {
			hasField$0 |= 0x4;
			tiles_wall_count$field = value;
		}

		public function get tilesWallCount():uint {
			return tiles_wall_count$field;
		}

		/**
		 *  @private
		 */
		public static const MATCH_STATE:FieldDescriptor$TYPE_ENUM = new FieldDescriptor$TYPE_ENUM("protobuf.TABLE_LIVE_INFO.match_state", "matchState", (8 << 3) | com.netease.protobuf.WireType.VARINT, protobuf.E_MATCH_STATE);

		private var match_state$field:int;

		public function clearMatchState():void {
			hasField$0 &= 0xfffffff7;
			match_state$field = new int();
		}

		public function get hasMatchState():Boolean {
			return (hasField$0 & 0x8) != 0;
		}

		public function set matchState(value:int):void {
			hasField$0 |= 0x8;
			match_state$field = value;
		}

		public function get matchState():int {
			return match_state$field;
		}

		/**
		 *  @private
		 */
		public static const BET_POOL_NTF:FieldDescriptor$TYPE_MESSAGE = new FieldDescriptor$TYPE_MESSAGE("protobuf.TABLE_LIVE_INFO.bet_pool_ntf", "betPoolNtf", (9 << 3) | com.netease.protobuf.WireType.LENGTH_DELIMITED, protobuf.MSPKG_BET_POOL_NTF);

		private var bet_pool_ntf$field:protobuf.MSPKG_BET_POOL_NTF;

		public function clearBetPoolNtf():void {
			bet_pool_ntf$field = null;
		}

		public function get hasBetPoolNtf():Boolean {
			return bet_pool_ntf$field != null;
		}

		public function set betPoolNtf(value:protobuf.MSPKG_BET_POOL_NTF):void {
			bet_pool_ntf$field = value;
		}

		public function get betPoolNtf():protobuf.MSPKG_BET_POOL_NTF {
			return bet_pool_ntf$field;
		}

		/**
		 *  @private
		 */
		public static const MIN_BLINDS:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.TABLE_LIVE_INFO.min_blinds", "minBlinds", (10 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var min_blinds$field:Number;

		public function clearMinBlinds():void {
			hasField$0 &= 0xffffffef;
			min_blinds$field = new Number();
		}

		public function get hasMinBlinds():Boolean {
			return (hasField$0 & 0x10) != 0;
		}

		public function set minBlinds(value:Number):void {
			hasField$0 |= 0x10;
			min_blinds$field = value;
		}

		public function get minBlinds():Number {
			return min_blinds$field;
		}

		/**
		 *  @private
		 */
		public static const MAX_BLINDS:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.TABLE_LIVE_INFO.max_blinds", "maxBlinds", (11 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var max_blinds$field:Number;

		public function clearMaxBlinds():void {
			hasField$0 &= 0xffffffdf;
			max_blinds$field = new Number();
		}

		public function get hasMaxBlinds():Boolean {
			return (hasField$0 & 0x20) != 0;
		}

		public function set maxBlinds(value:Number):void {
			hasField$0 |= 0x20;
			max_blinds$field = value;
		}

		public function get maxBlinds():Number {
			return max_blinds$field;
		}

		/**
		 *  @private
		 */
		public static const RESPONSE_TIME:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.response_time", "responseTime", (12 << 3) | com.netease.protobuf.WireType.VARINT);

		private var response_time$field:uint;

		public function clearResponseTime():void {
			hasField$0 &= 0xffffffbf;
			response_time$field = new uint();
		}

		public function get hasResponseTime():Boolean {
			return (hasField$0 & 0x40) != 0;
		}

		public function set responseTime(value:uint):void {
			hasField$0 |= 0x40;
			response_time$field = value;
		}

		public function get responseTime():uint {
			return response_time$field;
		}

		/**
		 *  @private
		 */
		public static const DISCARD_TIME:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.TABLE_LIVE_INFO.discard_time", "discardTime", (13 << 3) | com.netease.protobuf.WireType.VARINT);

		private var discard_time$field:uint;

		public function clearDiscardTime():void {
			hasField$0 &= 0xffffff7f;
			discard_time$field = new uint();
		}

		public function get hasDiscardTime():Boolean {
			return (hasField$0 & 0x80) != 0;
		}

		public function set discardTime(value:uint):void {
			hasField$0 |= 0x80;
			discard_time$field = value;
		}

		public function get discardTime():uint {
			return discard_time$field;
		}

		/**
		 *  @private
		 */
		public static const CAN_CHAT:FieldDescriptor$TYPE_BOOL = new FieldDescriptor$TYPE_BOOL("protobuf.TABLE_LIVE_INFO.can_chat", "canChat", (14 << 3) | com.netease.protobuf.WireType.VARINT);

		private var can_chat$field:Boolean;

		public function clearCanChat():void {
			hasField$0 &= 0xfffffeff;
			can_chat$field = new Boolean();
		}

		public function get hasCanChat():Boolean {
			return (hasField$0 & 0x100) != 0;
		}

		public function set canChat(value:Boolean):void {
			hasField$0 |= 0x100;
			can_chat$field = value;
		}

		public function get canChat():Boolean {
			return can_chat$field;
		}

		/**
		 *  @private
		 */
		public static const MATCH_ID:FieldDescriptor$TYPE_MESSAGE = new FieldDescriptor$TYPE_MESSAGE("protobuf.TABLE_LIVE_INFO.match_id", "matchId", (15 << 3) | com.netease.protobuf.WireType.LENGTH_DELIMITED, protobuf.MSPKG_MATCH_ID_NTF);

		private var match_id$field:protobuf.MSPKG_MATCH_ID_NTF;

		public function clearMatchId():void {
			match_id$field = null;
		}

		public function get hasMatchId():Boolean {
			return match_id$field != null;
		}

		public function set matchId(value:protobuf.MSPKG_MATCH_ID_NTF):void {
			match_id$field = value;
		}

		public function get matchId():protobuf.MSPKG_MATCH_ID_NTF {
			return match_id$field;
		}

		/**
		 *  @private
		 */
		override used_by_generated_code final function writeToBuffer(output:com.netease.protobuf.WritingBuffer):void {
			for (var playersInfo$index:uint = 0; playersInfo$index < this.playersInfo.length; ++playersInfo$index) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.LENGTH_DELIMITED, 1);
				com.netease.protobuf.WriteUtils.write$TYPE_MESSAGE(output, this.playersInfo[playersInfo$index]);
			}
			for (var tilesOnTable$index:uint = 0; tilesOnTable$index < this.tilesOnTable.length; ++tilesOnTable$index) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 2);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, this.tilesOnTable[tilesOnTable$index]);
			}
			for (var tilesInHand$index:uint = 0; tilesInHand$index < this.tilesInHand.length; ++tilesInHand$index) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 3);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, this.tilesInHand[tilesInHand$index]);
			}
			if (hasMoney) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 4);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, money$field);
			}
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 5);
			com.netease.protobuf.WriteUtils.write$TYPE_UINT64(output, this.tableId);
			if (hasBankerChairId) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 6);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, banker_chair_id$field);
			}
			if (hasTilesWallCount) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 7);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, tiles_wall_count$field);
			}
			if (hasMatchState) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 8);
				com.netease.protobuf.WriteUtils.write$TYPE_ENUM(output, match_state$field);
			}
			if (hasBetPoolNtf) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.LENGTH_DELIMITED, 9);
				com.netease.protobuf.WriteUtils.write$TYPE_MESSAGE(output, bet_pool_ntf$field);
			}
			if (hasMinBlinds) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 10);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, min_blinds$field);
			}
			if (hasMaxBlinds) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 11);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, max_blinds$field);
			}
			if (hasResponseTime) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 12);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, response_time$field);
			}
			if (hasDiscardTime) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 13);
				com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, discard_time$field);
			}
			if (hasCanChat) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 14);
				com.netease.protobuf.WriteUtils.write$TYPE_BOOL(output, can_chat$field);
			}
			if (hasMatchId) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.LENGTH_DELIMITED, 15);
				com.netease.protobuf.WriteUtils.write$TYPE_MESSAGE(output, match_id$field);
			}
			for (var fieldKey:* in this) {
				super.writeUnknown(output, fieldKey);
			}
		}

		/**
		 *  @private
		 */
		override used_by_generated_code final function readFromSlice(input:flash.utils.IDataInput, bytesAfterSlice:uint):void {
			var money$count:uint = 0;
			var table_id$count:uint = 0;
			var banker_chair_id$count:uint = 0;
			var tiles_wall_count$count:uint = 0;
			var match_state$count:uint = 0;
			var bet_pool_ntf$count:uint = 0;
			var min_blinds$count:uint = 0;
			var max_blinds$count:uint = 0;
			var response_time$count:uint = 0;
			var discard_time$count:uint = 0;
			var can_chat$count:uint = 0;
			var match_id$count:uint = 0;
			while (input.bytesAvailable > bytesAfterSlice) {
				var tag:uint = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
				switch (tag >> 3) {
				case 1:
					this.playersInfo.push(com.netease.protobuf.ReadUtils.read$TYPE_MESSAGE(input, new protobuf.TABLE_PLAYER_INFO()));
					break;
				case 2:
					if ((tag & 7) == com.netease.protobuf.WireType.LENGTH_DELIMITED) {
						com.netease.protobuf.ReadUtils.readPackedRepeated(input, com.netease.protobuf.ReadUtils.read$TYPE_UINT32, this.tilesOnTable);
						break;
					}
					this.tilesOnTable.push(com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input));
					break;
				case 3:
					if ((tag & 7) == com.netease.protobuf.WireType.LENGTH_DELIMITED) {
						com.netease.protobuf.ReadUtils.readPackedRepeated(input, com.netease.protobuf.ReadUtils.read$TYPE_UINT32, this.tilesInHand);
						break;
					}
					this.tilesInHand.push(com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input));
					break;
				case 4:
					if (money$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.money cannot be set twice.');
					}
					++money$count;
					this.money = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 5:
					if (table_id$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.tableId cannot be set twice.');
					}
					++table_id$count;
					this.tableId = com.netease.protobuf.ReadUtils.read$TYPE_UINT64(input);
					break;
				case 6:
					if (banker_chair_id$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.bankerChairId cannot be set twice.');
					}
					++banker_chair_id$count;
					this.bankerChairId = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 7:
					if (tiles_wall_count$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.tilesWallCount cannot be set twice.');
					}
					++tiles_wall_count$count;
					this.tilesWallCount = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 8:
					if (match_state$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.matchState cannot be set twice.');
					}
					++match_state$count;
					this.matchState = com.netease.protobuf.ReadUtils.read$TYPE_ENUM(input);
					break;
				case 9:
					if (bet_pool_ntf$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.betPoolNtf cannot be set twice.');
					}
					++bet_pool_ntf$count;
					this.betPoolNtf = new protobuf.MSPKG_BET_POOL_NTF();
					com.netease.protobuf.ReadUtils.read$TYPE_MESSAGE(input, this.betPoolNtf);
					break;
				case 10:
					if (min_blinds$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.minBlinds cannot be set twice.');
					}
					++min_blinds$count;
					this.minBlinds = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 11:
					if (max_blinds$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.maxBlinds cannot be set twice.');
					}
					++max_blinds$count;
					this.maxBlinds = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 12:
					if (response_time$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.responseTime cannot be set twice.');
					}
					++response_time$count;
					this.responseTime = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 13:
					if (discard_time$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.discardTime cannot be set twice.');
					}
					++discard_time$count;
					this.discardTime = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 14:
					if (can_chat$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.canChat cannot be set twice.');
					}
					++can_chat$count;
					this.canChat = com.netease.protobuf.ReadUtils.read$TYPE_BOOL(input);
					break;
				case 15:
					if (match_id$count != 0) {
						throw new flash.errors.IOError('Bad data format: TABLE_LIVE_INFO.matchId cannot be set twice.');
					}
					++match_id$count;
					this.matchId = new protobuf.MSPKG_MATCH_ID_NTF();
					com.netease.protobuf.ReadUtils.read$TYPE_MESSAGE(input, this.matchId);
					break;
				default:
					super.readUnknown(input, tag);
					break;
				}
			}
		}

	}
}
